package paixusuanfa;

import org.junit.Test;

import java.util.Arrays;


/**
 * 选择排序
 */
public class SortArray {

     //创建一个10个元素的数组
    static int[] arr = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50};


    //从大到小的冒泡排序
    @Test
    public  void sortMaoPao() {
        System.out.println("排序前：" + Arrays.toString(arr));
        for (int i = 0; i < arr.length - 1; i++) {//比较的轮数
            for (int j = 0; j < arr.length - 1 - i; j++) {//每一轮比较的次数
                if (arr[j] < arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        System.out.println("排序后：" + Arrays.toString(arr));
    }


    //选择排序
    @Test
    public void sortSelect() {
        System.out.println("排序前：" + Arrays.toString(arr));
        //选择排序
        for (int i = 0; i < arr.length - 1; i++) {//比较的轮数
            int maxIndex = i;
            for (int j = i + 1; j < arr.length; j++) {//每一轮比较的次数
                //找到最大的元素
                if (arr[j] > arr[maxIndex]) {
                    maxIndex = j;
                }
            }
            //交换
            int temp = arr[i];
            arr[i] = arr[maxIndex];
            arr[maxIndex] = temp;
        }
        System.out.println("排序后：" + Arrays.toString(arr));
    }

    //插入排序

    @Test
    public void sortInsert() {
        System.out.println("排序前：" + Arrays.toString(arr));
        //插入排序
        for (int i = 1; i < arr.length; i++) {//比较的轮数
            int temp = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] < temp) {
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = temp;
        }
        System.out.println("排序后：" + Arrays.toString(arr));
    }


}
